package aer.NumeroKaprekar;

import java.io.*;
import java.math.BigInteger;

public class NumeroKaprekar {
	private static long numero, longitud, n1, n2, sol;
	private static boolean kaprekar, m;
	private static int i, mitad;
	private static String parte1, parte2, n, s;
	private static BigInteger bi;
	private static PrintWriter out = new PrintWriter(System.out);
	private static BufferedReader br = new BufferedReader(
			new InputStreamReader(System.in));

	private static void buscarCeros() {

		longitud = s.length();
		kaprekar = false;

		for (i = 0; i < longitud; i++) {
			if (s.charAt(i) == '0') {
				mitad = i;
				m = cero();
				if (m) {
					kaprekar = true;
					break;
				}
			}
		}

		if (kaprekar) {
			out.print("SI\n");
		} else {
			out.print("NO\n");
		}

	}

	private static boolean cero() {

		parte1 = "";
		parte2 = "";

		longitud = s.length();

		for (i = 0; i < mitad; i++) {
			parte1 += s.charAt(i);
		}

		for (i = mitad + 1; i < longitud; i++) {
			parte2 += s.charAt(i);
		}

		if (parte1.equals("")) {
			parte1 = "0";
		}
		if (parte2.equals("")) {
			return false;
		} else if (Long.parseLong(parte2) == 0) {
			return false;
		} else {

			n1 = Long.parseLong(parte1);
			n2 = Long.parseLong(parte2);
			sol = n1 + n2;
			if (numero == sol) {
				return true;
			} else {
				return false;
			}
		}

	}

	public static void main(String[] args) throws Exception {
		numero = Long.parseLong(br.readLine());

		while (numero != 0) {
			programa();
			numero = Long.parseLong(br.readLine());
		}

		out.flush();
	}

	private static void programa() {

		n = "" + numero;
		bi = new BigInteger(n);
		bi = bi.multiply(bi);

		longitud = bi.toString().length();
		s = bi.toString();

		if (longitud % 2 == 0) {
			esPar();
		} else {
			esImpar();
		}

	} // fin programa

	private static void operacion1Impar() {

		parte1 = "";
		parte2 = "";

		longitud = s.length();
		mitad = s.length() / 2;
		mitad++;

		for (i = 0; i < mitad; i++) {
			parte1 += s.charAt(i);
		}

		for (i = mitad; i < longitud; i++) {
			parte2 += s.charAt(i);
		}

		if (parte1.equals("")) {
			parte1 = "0";
		}
		if (parte2.equals("")) {
			buscarCeros();
		} else if (Long.parseLong(parte2) == 0) {
			buscarCeros();
		} else {

			n1 = Long.parseLong(parte1);
			n2 = Long.parseLong(parte2);
			sol = n1 + n2;
			if (numero == sol) {
				out.print("SI\n");
			} else {
				buscarCeros();
			}
		}
	}

	private static void esImpar() {

		parte1 = "";
		parte2 = "";

		mitad = s.length() / 2;
		longitud = s.length();

		for (i = 0; i < mitad; i++) {
			parte1 += s.charAt(i);
		}

		for (i = mitad; i < longitud; i++) {
			parte2 += s.charAt(i);
		}

		if (parte1.equals("")) {
			parte1 = "0";
		}
		if (parte2.equals("")) {
			buscarCeros();
		} else if (Long.parseLong(parte2) == 0) {
			buscarCeros();
		} else {

			n1 = Long.parseLong(parte1);
			n2 = Long.parseLong(parte2);
			sol = n1 + n2;
			if (numero == sol) {
				out.print("SI\n");
			} else {
				operacion1Impar();
			}
		}
	}

	private static void esPar() {
		parte1 = "";
		parte2 = "";

		mitad = s.length() / 2;
		longitud = s.length();

		for (i = 0; i < mitad; i++) {
			parte1 += s.charAt(i);
		}

		for (i = mitad; i < longitud; i++) {
			parte2 += s.charAt(i);
		}

		if (parte1.equals("")) {
			parte1 = "0";
		}
		if (parte2.equals("")) {
			buscarCeros();
		} else if (Long.parseLong(parte2) == 0) {
			buscarCeros();
		} else {

			n1 = Long.parseLong(parte1);
			n2 = Long.parseLong(parte2);
			sol = n1 + n2;
			if (numero == sol) {
				out.print("SI\n");
			} else {
				buscarCeros();
			}
		}
	}

}